package Q16_11_Diving_Board; import java.util.HashSet; public class QuestionB { public static int counter = 0; public static HashSet<Integer> allLengths(int k, int shorter, int longer) { HashSet<Integer> lengths = new HashSet<Integer>(); HashSet<String> visited = new HashSet<String>(); getAllLengths(k, 0, shorter, longer, lengths, visited); return lengths; } public static void getAllLengths(int k, int total, int shorter, int longer, HashSet<Integer> lengths, HashSet<String> visited) { counter++; if (k == 0) { lengths.add(total); return; } String key = k + " " + total; if (visited.contains(key)) { return; } getAllLengths(k - 1, total + shorter, shorter, longer, lengths, visited); getAllLengths(k - 1, total + longer, shorter, longer, lengths, visited); visited.add(key); } public static void main(String[] args) { HashSet<Integer> lengths = allLengths(12, 1, 3); System.out.println(lengths.toString()); System.out.println(counter); } }